
const path = require("path")
//解析语法糖路径
exports.path=(str,number=2,hz="")=>{
    if(!str) return;
    //替换路径糖
    Object.keys(global.gem_config.pathSugar).forEach(res=>{str = str.replace(res,global.gem_config.pathSugar[res])})
    if(/[\\/]$/.test(str)){hz="\\"}
    //判断一下路径是否为绝对路径
    if(str.startsWith(process.cwd())){
        //这是绝对路径,不需要处理,转化一下符号就行了
        return path.resolve(str)+hz;
    }else if(str.startsWith("/")){
        //这是网站根目录
        return path.resolve(process.cwd()+str)+hz;
    }else if(str.startsWith('..') || str.startsWith('.')){
        //这是相对路径，把调用者的父路径带上,组合成完整路径
        return path.resolve(super_path(number)+str)+hz;
    }else{
        return str;
    }
}

exports.super_path = super_path;
//1代表的是自身的位置，2代表调用者的位置
function super_path(number=2,bool=false) {
    Error.prepareStackTrace = function(_, stack){ return stack; };
    const err = new Error;
    const stack = err.stack;
    //bool为真返回完整的文件路径
    if(bool){
        return stack[number].getFileName();
    }else{
        //返回父路径
        return stack[number].getFileName().replace(/[^\\/]*$/,"");
    }
}